package com.ada.spark.rddoperator

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * 作用：分组，按照传入函数的返回值进行分组。将相同的key对应的值放入一个迭代器。
  */
object Spark08_groupBy {

    def main(args: Array[String]): Unit = {
        //创建SparkConf
        val conf = new SparkConf().setAppName("Spark08_groupBy").setMaster("local[*]")
        //创建Spark上下文对象
        val sc = new SparkContext(conf)

        val listRDD: RDD[Int] = sc.makeRDD(1 to 4)

        //生成数据按指定规则进行分组
        //分组后的数据形成了对偶元组（K, V），K表示分组的key，V表示分组的数据集合
        val groupByRDD: RDD[(Int, Iterable[Int])] = listRDD.groupBy(x => x % 2)

        println(groupByRDD.collect().mkString(","))
        //(0,CompactBuffer(2, 4)),(1,CompactBuffer(1, 3))
    }

}
